/* #include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>

int main(int argc, char const *argv[])
{
	pid_t son;
	// 获取子进程的个数
	int n;
	printf("请输入子进程的个数\n");
	scanf("%d", &n);
	// 循环的创建子进程，子进程打印并退出，父进程保留到最后
	for(int i=0; i<n; i++)
	{
		son = fork(); // 创建子进程
		if(son > 0) // 父进程
		{
			continue;
		}
		else if(son == 0) // 子进程
		{
			break;
		}
	}
	// 判断，子进程打印pid并退出
	if(son == 0) // 子进程
	{
		printf("子进程pid=%d\n", getpid());
		printf("子进程的父进程pid=%d\n", getppid());
		exit(0);
	}
	// 判断，父进程回收所有子进程的资源
	if(son > 0)
	{
		// 循环回收子进程资源
		for(int i=0; i<n; i++)
		{
			wait(NULL);
		}
	}

	return 0;
}
 */

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>

int main(int argc, char const *argv[])
{
	pid_t son;
	// 获取子进程的个数
	int n;
	printf("请输入子进程的个数\n");
	scanf("%d", &n);
	for(int i=0; i<n; i++)
	{
		son = fork();
		if(son > 0)
		{
			wait(NULL);
		}
		else if(son == 0)
		{
			printf("子进程pid=%d\n", getpid());
			printf("子进程的父进程pid=%d\n", getppid());
			exit(0);
		}
	}
	printf("我是父进程，当前pid=%d\n", getpid());

	return 0;
}
